# -*- coding:utf-8 -*-
# 此代码自我实现list排序算法，主要的原因是处于练习python 代码
# 此代码的思想：两轮循环，外循环每次按顺序取列表的一个元素，内循环将此元素和后续的元素进行比较(不比较前面的元素)。外循环第一次，
# 内循环完成后，求出最大值，将这个最大值append到另一个列表中。然后在原列表中将这个最大值弹出，注意最大值可能有多个，都要弹出，
# 当然也要添加至另一个列表中多次
# 外循环第二次，求出原列表中第2大值，照样将其值append 到另一个列表中，也要将其从原列表中弹出，同样注意此值有多次的情况


def list_sort(source_list,sorted_list):
    i = 0
    j = 0
    while i < len(source_list):
        item_init = source_list[i]
        for item in source_list[i + 1:]:
            if item_init < item:
                item_init = item

        #l_sort.append(item_init)
        if source_list.count(item_init) >1:
            while j <= source_list.count(item_init):
                sorted_list.append(item_init)
                index = source_list.index(item_init)
                source_list.pop(index)
                j += 1
        else:
            sorted_list.append(item_init)
            source_list.pop(source_list.index(item_init))

        j = 0
    return sorted_list

if __name__ == '__main__':
    source_list = [5, 9, 7, 6, 3, 1, 9, 40, 25, 15, 2, 10, 8, 4, 10, 8, 15, 20, 25, 40]
    sorted_list = []
    sorted_list = list_sort(source_list,sorted_list)
    print(sorted_list)